from rest_framework import status

from weiwenhai_Oj.exceptions.base_exception import ServiceException


class DataException(ServiceException):
    """
    数据异常基类，用于处理各种数据相关的异常情况。

    Attributes:
        message (str): 异常消息。
        code (int): HTTP状态码，默认为HTTP_400_BAD_REQUEST。

    Usage:
        raise DataException("数据操作失败")

    """
    def __init__(self, message, code=status.HTTP_400_BAD_REQUEST):
        super().__init__(message, code)


class ValidationException(DataException):
    """
    数据校验异常，当输入数据格式不正确或不符合预期时抛出。

    Usage:
        raise ValidationException("输入参数缺失")

    """
    pass


class NotFoundException(DataException):
    """
    数据不存在异常，当请求的资源或数据未找到时抛出。

    Usage:
        raise NotFoundException("用户ID不存在")

    """
    pass


class NotAllowedException(DataException):
    """
    数据不允许操作异常，当试图对数据进行未授权的操作时抛出。

    Usage:
        raise NotAllowedException("无权限删除订单")

    """
    pass


class DuplicateDataException(DataException):
    """
    数据重复异常，当试图插入已经存在的数据时抛出。

    Usage:
        raise DuplicateDataException("重复的用户名")

    """
    pass
